为什么这里操作符<< 没有重载却能输出对象的内容?

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:26:07
定义一个C++动态字符串的类
class String
{ public:
........//定义构造和析构函数,赋值运算符重载,但没重载<<运算符
private:
int lang;
char *point; //指向字符串首地址
}

int main ()
{ String s1;
String s1="Visual C++"; //调用构造函数
std::cout << s1 << endl;
}

结果输出="Visual C++"
为什么能输出对象的内容,而这里操作符<< 却没有重载?

cout是一个内置的ostream对象.
ostream类重载了<< 操作符.
所以直接用它可以实现输出.
你自己也可以定义一个ostream流对象.

cout已经重载了<<操作符,cout本身是一个流对象
跟String没关系。

cout本身就是ostream的对象吧

太奇怪了